package com.study.readerwriter;

import java.io.FileReader;
import java.io.IOException;
import java.io.LineNumberReader;

import org.junit.Test;

/**
* @Name: LineNumberReaderTest
* @Description: 跟踪行号的缓冲字符输入流测试类
* 说明：
* 继承关系：
* 	BufferedReader
* 		|-LineNumberReaderTest
* LineNumberReaderTest类：跟踪行号的缓冲字符输入流。此类定义了方法 setLineNumber(int) 和 getLineNumber()，它们可分别用于设置和获取当前行号。
* 		默认情况下，行编号从 0 开始。该行号随数据读取在每个行结束符处递增，并且可以通过调用 setLineNumber(int) 更改行号。
* 		但要注意的是，setLineNumber(int) 不会实际更改流中的当前位置；它只更改将由 getLineNumber() 返回的值。
		可认为行在遇到以下符号之一时结束：换行符（'\n'）、回车符（'\r'）、回车后紧跟换行符。 
     特有方法：
     	public int getLineNumber() 获得当前行号。 
     	public void setLineNumber(int lineNumber) 设置当前行号。 
* @Author: 李超	lc_jack@foxmail.com
* @CreateDate: 2017-1-16 下午3:40:56 
* @Version: V1.0
 */
public class LineNumberReaderTest {
	
	/**
	* @Name: setGetReadLine
	* @Description: 设置，获取读取内容的行号测试方法
	* @Author: 李超	lc_jack@foxmail.com
	* @Version: V1.0
	* @CreateDate: 2017-1-16 下午3:46:54
	* @Parameters: 无
	* @Return: void 无
	 */
	@Test
	public void setGetReadLine() throws IOException {
		LineNumberReader reader = new LineNumberReader(new FileReader("sort.txt")) ;
		String line = null ;
		//设置开始行号
		reader.setLineNumber(10) ;
		while((line = reader.readLine()) != null) {
			//获取每行的行号
			System.out.println(reader.getLineNumber() + ":" +line);
		}
		reader.close() ;
	}

}
